﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Nizm0.QOT.Library.Objects
{

    public interface IProcedure
    {
        IProcedureInfo Parent { get; set; }
        Procedure.EnumActionInProcedure ActionInProcedure { get; set; }
        DateTime CreationTime { get; set; }
        string Hash { get; }
        List<VariableInTheProcedure> ListOfVariable { get; set; }
        bool LoadedFromSettings { get; set; }
        DateTime ModifiedTime { get; set; }
        string Name { get; }
        List<ProcedureVersion> ProcVersionList { get; set; }
        string Source { get; set; }
        Procedure.EnumSource SourceType { get; set; }
        string Text { get; set; }
        Procedure.EnumProcType Type { get; set; }
        ProcedureVersion Version { get; }
        string Location { get; set; }

        event VersionChangeEventHandler VersionChange;

        T Deserialize<T>(string xmlobject)
                    where T : class;

        void Marge(Procedure procedure);
        void ChangeVersion(ProcedureVersion ProcVer);
        string Serialize();
        System.Windows.Forms.UserControl Show();
        void ShowText();
        string ToString();
    }
}